#pragma once

#include <filesystem>
#include <vector>

class CHeadFile;

class CBuildTool
{
public:
    CBuildTool();
    ~CBuildTool();

    void Reflect(
        const std::vector<std::filesystem::path>& InDirectories
        ,const std::vector<std::u8string>& InNamespaces //每个目录对应一个命名空间
        );

    struct SFileGroup
    {
        std::shared_ptr<CHeadFile> HeadFile;
        std::filesystem::path MetaFileHead;
        std::filesystem::path MetaFileCpp;
    };

    std::vector<SFileGroup> FileGroups;

    void RaiseError(const std::u8string & InMessage);
};